home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- #ifdef AMIGA
- #define OBJ_EXT "o"
- #else
- #define OBJ_EXT ".obj"
- #endif
-
- char *inclist[40];
- int maxinc = 0;
-
- char include[] = "#include";
-
- main(int argc,char *argv[])
- {
- int i, j, linelen;
- FILE *fp;
- static char filename[512], buf[512], incfile[512];
- char *cp,*cp1;
-
- inclist[maxinc++] = "";
-
- for(i=1;i<argc;i++){
- if (argv[i][0] == '-') {
- if (argv[i][1] == 'i') {
- char *p = &argv[i][2];
- int len = strlen(p);
-
- inclist[maxinc] = malloc(len + 5);
- strcpy(inclist[maxinc], p);
- if (p[len-1] != ':' && p[len-1] != '/')
- strcat(inclist[maxinc], "/");
- ++maxinc;
- }
- continue;
- }
- strcpy(filename,argv[i]);
- if((cp = strchr(filename,'.')) == NULL)
- continue;
-
- *cp = '\0';
- printf("%s.%s: %s",filename,OBJ_EXT,argv[i]);
- linelen = strlen(filename) + strlen(OBJ_EXT)
- + strlen(argv[i]) + 2;
- fp = fopen(argv[i],"r");
- while(fgets(buf,512,fp) != NULL){
- if(strncmp(buf,include,sizeof(include)-1) != 0)
- continue;
- if((cp = strchr(buf,'\"')) == NULL)
- continue;
- cp++;
- if((cp1 = strchr(cp,'\"')) == NULL)
- continue;
- *cp1 = '\0';
- stccpy(incfile, cp, sizeof(incfile));
- for (j = 0; j < maxinc; ) {
- strcpy(incfile, inclist[j]);
- strcat(incfile, cp);
- if (access(incfile, 4) == 0)
- break;
- ++j;
- }
- if (j >= maxinc) {
- fprintf(stderr, "Can't find %s for module %s\n",
- cp, argv[i]);
- continue;
- }
-
- if (linelen > 72) {
- printf("\n%s.%s: ",filename,OBJ_EXT,argv[i]);
- linelen = strlen(filename) + strlen(OBJ_EXT)
- + 2;
- } else
- putchar(' ');
-
- linelen += strlen(incfile);
- printf("%s", incfile);
- }
- putchar('\n');
- fclose(fp);
- }
- return 0;
- }
-